home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / rpc / rpc.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  4KB  |  98 lines

  1. /*
  2.  * rpc.h --
  3.  *
  4.  *    External definitions needed by users of the RPC system.  The
  5.  *    remote procedure call numbers are defined in rpcCall.h which
  6.  *    is also included by this file.  The other main thing needed
  7.  *    by users of the RPC system is the Rpc_Storage type.  This is
  8.  *    a record of buffer references manipulated by stub procedures
  9.  *    and passed into Rpc_Call.
  10.  *
  11.  * Copyright (C) 1985 Regents of the University of California
  12.  * All rights reserved.
  13.  *
  14.  *
  15.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/rpc/rpc.h,v 9.9 91/09/10 18:42:48 rab Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _RPC
  19. #define _RPC
  20.  
  21. #include <status.h>
  22. #ifdef KERNEL
  23. #include <net.h>
  24. #include <sys.h>
  25. #include <rpcTypes.h>
  26. #include <rpcCall.h>
  27. #else
  28. #include <kernel/net.h>
  29. #include <kernel/sys.h>
  30. #include <kernel/rpcTypes.h>
  31. #include <kernel/rpcCall.h>
  32. #endif /* KERNEL */
  33.  
  34. /*
  35.  * Structure to use for the simple call back to free up memory.
  36.  * The reply a service stub generates is held onto until the
  37.  * next request from the client arrives.  These pointers are to
  38.  * memory that should be free'ed - ie. the previous reply.
  39.  * If either pointer is NIL then it isn't freed.  See Rpc_Reply.
  40.  */
  41.  
  42. typedef struct {
  43.     Address    paramPtr;
  44.     Address    dataPtr;
  45. } Rpc_ReplyMem;
  46.  
  47. /*
  48.  * This is set up to be the Sprite Host ID used for broadcasting.
  49.  */
  50. #define RPC_BROADCAST_SERVER_ID    NET_BROADCAST_HOSTID
  51.  
  52. /*
  53.  * The local host's Sprite ID is exported for convenience to the filesystem
  54.  * which needs to know who it is relative to file servers.
  55.  */
  56. extern int rpc_SpriteID;
  57.  
  58. /*
  59.  * Hooks exported so they can be set via Fs_Command...
  60.  */
  61. extern Boolean rpc_Tracing;
  62. extern Boolean rpc_NoTimeouts;
  63.  
  64. /*
  65.  * Forward declarations
  66.  */
  67. extern ReturnStatus Rpc_Call _ARGS_((int serverID, int command, Rpc_Storage *storagePtr));
  68. extern void Rpc_Reply _ARGS_((ClientData srvToken, int error, register Rpc_Storage *storagePtr, int (*freeReplyProc)(ClientData freeReplyData), ClientData freeReplyData));
  69. extern void Rpc_ErrorReply _ARGS_((ClientData srvToken, int error));
  70. extern int Rpc_FreeMem _ARGS_((ClientData freeReplyData));
  71. extern ReturnStatus Rpc_CreateServer _ARGS_((int *pidPtr));
  72. extern ReturnStatus Rpc_Echo _ARGS_((int serverId, Address inputPtr, Address returnPtr, int size));
  73. extern ReturnStatus Rpc_Ping _ARGS_((int serverId));
  74. extern ReturnStatus Rpc_EchoTest _ARGS_((int serverId, int numEchoes, int size, Address inputPtr, Address returnPtr, Time *deltaTimePtr));
  75. extern ReturnStatus Rpc_GetTime _ARGS_((int serverId, Time *timePtr, int *timeZoneMinutesPtr, int *timeZoneDSTPtr));
  76. extern ReturnStatus Test_RpcStub _ARGS_((int command, Address argPtr));
  77. extern void Rpc_Init _ARGS_((void));
  78. extern void Rpc_Start _ARGS_((void));
  79. extern void Rpc_MaxSizes _ARGS_((int *maxDataSizePtr, int *maxParamSizePtr));
  80. extern void Rpc_Daemon _ARGS_((void));
  81. extern void Rpc_Server _ARGS_((void));
  82. extern void Rpc_Dispatch _ARGS_((Net_Interface *interPtr, int protocol, 
  83.     Address headerPtr, Address rpcHdrAddr, int packetLength));
  84. extern void Rpc_Timeout _ARGS_((Timer_Ticks time, ClientData data));
  85. extern void Rpc_PrintTrace _ARGS_((ClientData numRecords));
  86. extern ReturnStatus Rpc_DumpTrace _ARGS_((int firstRec, int lastRec, char *fileName));
  87. extern void Rpc_StampTest _ARGS_((void));
  88. extern void Rpc_PrintCallCount _ARGS_((void));
  89. extern void Rpc_PrintServiceCount _ARGS_((void));
  90. extern ReturnStatus Rpc_GetStats _ARGS_((int command, int option, Address argPtr));
  91. extern ReturnStatus Rpc_SendTest _ARGS_((int serverId, int numSends, int size, Address inputPtr, Time *deltaTimePtr));
  92. extern ReturnStatus Rpc_Send _ARGS_((int serverId, Address inputPtr, int size));
  93. extern ENTRY void    Rpc_OkayToTrace _ARGS_((Boolean okay));
  94. extern ENTRY void    Rpc_FreeTraces _ARGS_((void));
  95. extern ENTRY ReturnStatus    Rpc_DumpServerTraces _ARGS_((int length,
  96.     RpcServerUserStateInfo *resultPtr, int *lengthNeededPtr));
  97. #endif /* _RPC */
  98.